///@Description(描述)     xxxx
///@author(作者)          zhangyinhong
///@create(时间)          2025-08-30 09:58

/// 所有Model的基类，要求子类实现fromJson方法
abstract class BaseModel {
  /// 从JSON Map创建Model实例
  /// 子类必须实现此方法
  static T fromJson<T extends BaseModel>(Map<String, dynamic> json) {
    throw UnimplementedError('子类必须实现fromJson方法');
  }

}

/// 可序列化接口，提供更好的类型安全
abstract class Serializable<T> {
  /// 从JSON Map创建实例
  T fromJson(Map<String, dynamic> json);
  
  /// 转换为JSON Map
  Map<String, dynamic> toJson();
  
  /// 创建空实例
  T createEmpty();
}

/// 列表序列化扩展
extension ListSerializableExtension<T> on List<T> {
  /// 从JSON列表创建对象列表
  static List<T> fromJsonList<T extends Serializable<T>>(
    List<dynamic> jsonList,
    T Function(Map<String, dynamic>) fromJson,
  ) {
    return jsonList
        .whereType<Map<String, dynamic>>()
        .map((json) => fromJson(json))
        .toList();
  }
  
  /// 转换为JSON列表
  List<Map<String, dynamic>> toJsonList() {
    return map((item) => (item as Serializable<dynamic>).toJson()).toList();
  }
}
